package com.cloudfast.manager;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.cloudfast.response.FileResponse;

/**
 * 文件处理接口
 *
 * @author liuyw
 */
public interface FileStorageManager extends BaseManager {

    /**
     * 上传文件
     *
     * @param file 需上传的文件
     * @return FileResponse
     */
    public FileResponse upload(MultipartFile file) throws IOException;

    /**
     * 上传文件
     *
     * @param file   需上传的文件
     * @param prefix 文件夹前缀 添加后为 prefix+"/年/月/日/文件名称"
     * @return
     */
    public FileResponse upload(MultipartFile file, String prefix) throws IOException;

    /**
     * 上传文件流
     *
     * @param stream
     * @param filePath 文件路径 如/xxx/xxxx/aaa/
     * @param fileName 文件名称
     * @return
     */
    public FileResponse upload(InputStream stream, String filePath, String fileName) throws IOException;

    /**
     * 下载
     *
     * @param filePath 下载的文件路径路径(上传返回的路径)
     * @return
     */
    public byte[] download(String filePath);

    /**
     * 删除单个文件
     *
     * @param filePath
     * @return
     */
    public int deleteFile(String filePath);

    /**
     * 遍历文件
     *
     * @param rootPath 遍历的跟路径
     * @return
     */
    public List<File> iterationFile(String rootPath);

}
